package XZK010203AND001;

/**
 * 面向对象高级训练
 *
 * @author bing.z 2021/5/28 20:22
 **/
public class Demo {
    public static void main(String[] args) {
        /**
         * 1、试题：假设用户账号为：admin，密码为 123，编写用户登陆案例。 要
         * 求：请将登陆定义为 login 方法， 并将 login 方法写在 UserService 类中
         */
        UserService userService = new UserServiceImpl();
        userService.login("admin", "123");
        userService.login("adminx","123");

        /**
         * 2、试题：自定义一个类， 命名为 MyList，
         * 类中包含属性：Object[] element;
         * 定义如下几个方法：
         * 1. 增加方法 add ： 可以向数组属性中依次存储 Object，数
         * 组内容存满时，需实现动态扩容（详解在下面）。 参考: Boolean add(Object
         * obj)
         * 2. 删除方法 remove ： 可以根据数据或下标，从数组属性
         * 中删除 Object 数据，删除后，数组后续 元素需前移。参考:void remove(Object
         * obj) 或 void remove(Integer index)
         * 3. 查询方法 get ： 方法传入下标，返回数组中指定下标的
         * 数据。
         * 参考:Object get(Integer index)
         * 4. 当前存储数据量 size ： 获取当前存储的有效数据长度
         * 参考:size=数组.length
         * 新职课教研教学中心
         * 2
         * 动态扩容详解： 无需真正增加原数组的容量，只用将原内容复
         * 制到新的大数组，然后让原数组名称重新等于大数组即 可。由于原数组数据
         * 在堆中， 失去引用会被 GC 自动回收。(考点:如何实现数组的动态长度)
         */
        // 起始容量为 3 的列表
        MyList myList = new MyList(3);
        System.out.println(myList.add(1));
        System.out.println(myList.add(2));
        System.out.println("myList 当前存储量为：" + myList.size());
        System.out.println(myList.add(3));
        System.out.println(myList.add(4));
        System.out.println("myList 当前存储量为：" + myList.size());
        System.out.println(myList.remove(1));
        System.out.println("myList 当前存储量为：" + myList.size());
        System.out.println(myList.add("哈哈哈"));
        System.out.println("myList 当前存储量为：" + myList.size());
        System.out.println(myList.get(myList.size() - 1));
        System.out.println(myList.remove("哈哈哈"));
        System.out.println("myList 当前存储量为：" + myList.size());
    }
}
